
#include "stdafx.h"
#include "VerArray.h"

bool CVerArray::set(LPCSTR ver)
{
	if (!ver)
		isValid = false;
	else
	{
		build(ver, '.'); isValid = (count == 4);
	}
	if (isValid)
	{
		for (intptr_t i = 0; i < count; i++) nVer[i] = atoi(str[i]);
	}
	return isValid;
}

bool CVerArray::equal(intptr_t ver0, intptr_t ver1, intptr_t ver2, intptr_t ver3)
{
	return isValid && nVer[0] == ver0 && nVer[1] == ver1 && nVer[2] == ver2 && nVer[3] == ver3;
}

bool CVerArray::greatThan(intptr_t ver0, intptr_t ver1, intptr_t ver2, intptr_t ver3)
{
	if (!isValid) return false;
	if (nVer[0]>ver0) return true;
	if (nVer[0]<ver0) return false;
	if (nVer[1]>ver1) return true;
	if (nVer[1]<ver1) return false;
	if (nVer[2]>ver2) return true;
	if (nVer[2]<ver2) return false;
	return nVer[3]>ver3;
}

bool CVerArray::lessThan(intptr_t ver0, intptr_t ver1, intptr_t ver2, intptr_t ver3)
{
	if (!isValid) return false;
	if (nVer[0]<ver0) return true;
	if (nVer[0]>ver0) return false;
	if (nVer[1]<ver1) return true;
	if (nVer[1]>ver1) return false;
	if (nVer[2]<ver2) return true;
	if (nVer[2]>ver2) return false;
	return nVer[3]<ver3;
}

bool CVerArray::greatEqual(intptr_t ver0, intptr_t ver1, intptr_t ver2, intptr_t ver3)
{
	if (!isValid) return false;
	if (nVer[0]>ver0) return true;
	if (nVer[0]<ver0) return false;
	if (nVer[1]>ver1) return true;
	if (nVer[1]<ver1) return false;
	if (nVer[2]>ver2) return true;
	if (nVer[2]<ver2) return false;
	return nVer[3]>=ver3;
}

bool CVerArray::lessEqual(intptr_t ver0, intptr_t ver1, intptr_t ver2, intptr_t ver3)
{
	if (!isValid) return false;
	if (nVer[0]<ver0) return true;
	if (nVer[0]>ver0) return false;
	if (nVer[1]<ver1) return true;
	if (nVer[1]>ver1) return false;
	if (nVer[2]<ver2) return true;
	if (nVer[2]>ver2) return false;
	return nVer[3]<=ver3;
}
